<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script>
//str 是想加密的字符串
//pwd 是key
var keyStr = "ABCDEFGHIJKLMNOP" +  
             "QRSTUVWXYZabcdef" +  
             "ghijklmnopqrstuv" +  
             "wxyz0123456789+/" +  
             "=";  
function decrypt(str, pwd){
if (str == null || str.length < 8){
alert("A salt value could not be extracted from the encrypted message because it's length is too short. The message cannot be decrypted.");
return;
}
if (pwd == null || pwd.length <= 0){
alert("Please enter a password with which to decrypt the message.");
return;
}
var prand = "";
for (var i = 0; i < pwd.length; i++){
prand += pwd.charCodeAt(i).toString();
}
var sPos = Math.floor(prand.length / 5);
var mult = parseInt(prand.charAt(sPos) + prand.charAt(sPos * 2) + prand.charAt(sPos * 3) + prand.charAt(sPos * 4) + prand.charAt(sPos * 5));
var incr = Math.round(pwd.length / 2);
var modu = Math.pow(2, 31) - 1;
var salt = parseInt(str.substring(str.length - 8, str.length), 16);
str = str.substring(0, str.length - 8);
prand += salt;
while (prand.length > 10){
prand = (parseInt(prand.substring(0, 10)) + parseInt(prand.substring(10, prand.length))).toString();
}
prand = (mult * prand + incr) % modu;
var enc_chr = "";
var enc_str = "";
for (var i = 0; i < str.length; i += 2){
enc_chr = parseInt(parseInt(str.substring(i, i + 2), 16) ^ Math.floor((prand / modu) * 255));
enc_str += String.fromCharCode(enc_chr);
prand = (mult * prand + incr) % modu;
}
return enc_str;
}

function decode64(input) {  
   var output = new Array();  
   var chr1, chr2, chr3 = "";  
   var enc1, enc2, enc3, enc4 = "";  
   var i = 0;  
  
   // remove all characters that are not A-Z, a-z, 0-9, +, /, or =  
   var base64test = /[^A-Za-z0-9\+\/\=]/g;  
   if (base64test.exec(input)) {  
      alert("There were invalid base64 characters in the input text.\n" +  
            "Valid base64 characters are A-Z, a-z, 0-9, '+', '/', and '='\n" +  
            "Expect errors in decoding.");  
   }  
   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");  
  
   do {  
      enc1 = keyStr.indexOf(input.charAt(i++));  
      enc2 = keyStr.indexOf(input.charAt(i++));  
      enc3 = keyStr.indexOf(input.charAt(i++));  
      enc4 = keyStr.indexOf(input.charAt(i++));  
  
      chr1 = (enc1 << 2) | (enc2 >> 4);  
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);  
      chr3 = ((enc3 & 3) << 6) | enc4;  
  
      //output = output + String.fromCharCode(chr1);  
  	output.push(chr1); 
      if (enc3 != 64) {  
         output.push(chr2);  
      }  
      if (enc4 != 64) {  
	     output.push(chr3); 
        // output = output + String.fromCharCode(chr3);  
      }  
  
      chr1 = chr2 = chr3 = "";  
      enc1 = enc2 = enc3 = enc4 = "";  
  
   } while (i < input.length);  
  
   //return unescape(output);
   return output;  
}  
//,"a)42f~!0")
var base64=decode64('MxKCOekI5xY=');
var result="";
for (var i = 0; i < base64.length; i++) {
    result += String.fromCharCode(parseInt(base64[i], 2));
}
var source=decrypt(base64,"a)42f~!0");
alert(source);
</script>
</head>

<body>
</body>
</html>
